package br.ufc.quixada.model.entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="eventos")
public class Evento implements Serializable{

	@Id
	@GeneratedValue
	private long id;
	
	@Column(length=100, nullable=false)
	private String nome;
	
	@Column(length=20, nullable=false)
	private String sigla;
	
	@Column(length=100)
	private String tema;
	
	@OneToOne
	@JoinColumn(name="admin_id")
	private Perfil admin;
	
	@Column(name="inicio_inscricao")
	private Date inicioInscricao;
	
	@Column(name="fim_inscricao")
	private Date fimInscricao;
	
	@Column(nullable=true)
	private boolean ativo;
	
	private String descricao;
	
	private Date inicio;
	
	private Date fim;
	
	@Column(nullable=true)
	private int limiteAtividadePorParticipante;
	
	@OneToMany
	@JoinTable (name="eventos_atividades",
	joinColumns = @JoinColumn (name="evento_id"),
	inverseJoinColumns = @JoinColumn (name="atividade_id"))
	Collection<Atividade> atividades;
	
	public Evento(){
		atividades = new ArrayList<Atividade>();
	}
	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getSigla() {
		return sigla;
	}
	
	public void setSigla(String sigla) {
		this.sigla = sigla;
	}
	
	public String getTema() {
		return tema;
	}
	
	public void setTema(String tema) {
		this.tema = tema;
	}
	
	public Perfil getAdmin() {
		return admin;
	}
	
	public void setAdmin(Perfil admin) {
		this.admin = admin;
	}
	
	public Date getInicioInscricao() {
		return inicioInscricao;
	}
	
	public void setInicioInscricao(Date inicioInscricao) {
		this.inicioInscricao = inicioInscricao;
	}
		
	public Date getFimInscricao() {
		return fimInscricao;
	}
	
	public void setFimInscricao(Date fimInscricao) {
		this.fimInscricao = fimInscricao;
	}
		
	public boolean isAtivo() {
		return ativo;
	}
	
	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	public Date getInicio() {
		return inicio;
	}
	
	public void setInicio(Date inicio) {
		this.inicio = inicio;
	}
	

	public Date getFim() {
		return fim;
	}
	
	public void setFim(Date fim) {
		this.fim = fim;
	}
	

	public int getLimiteAtividadePorParticipante() {
		return limiteAtividadePorParticipante;
	}
	
	public void setLimiteAtividadePorParticipante(int limiteAtividadePorParticipante) {
		this.limiteAtividadePorParticipante = limiteAtividadePorParticipante;
	}

	public Collection<Atividade> getAtividades() {
		return atividades;
	}

	public void setAtividades(Collection<Atividade> atividades) {
		this.atividades = atividades;
	}
	
	public void addAtividadeEvento(Atividade atividade){
		atividades.add(atividade);
	}
	
}